//
// Copyright (c) 2024 BPer
//
#ifndef SRC_BPERRTP_BPERRTCPNACK_H_
#define SRC_BPERRTP_BPERRTCPNACK_H_

#include <bperrtp/BPerRtp.h>
#include <bperutil/BPerType.h>
#include <bperrtp/BPerRtcpCommon.h>

typedef struct BPerPidBlp {
	uint16_t pid;
	uint16_t blp;
	int32_t in_use;
} BPerPidBlp;

#ifdef __cplusplus
extern "C"{
#endif
void bPer_create_rtcpNack(BPerRtcpCommon *comm, uint32_t pssrc);
void bPer_destroy_rtcpNack(BPerRtcpCommon *comm);
void bPer_rtcpNack_init(BPerRtcpCommon *comm, uint32_t pssrc);
void bPer_rtcpNack_clear(BPerRtcpNack *nack);
void bPer_rtcpNack_addSn(BPerRtcpNack *nack, uint16_t sn);

int32_t bPer_decode_rtcpNack(BPerRtcpCommon *comm, BPerBuffer *buffer);
int32_t bPer_encode_rtcpNack(BPerRtcpCommon *comm, BPerBuffer *buffer);
uint64_t bPer_rtcpNack_nb_bytes();

#ifdef __cplusplus
}
#endif
#endif /* SRC_BPERRTP_BPERRTCPNACK_H_ */
